<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Cwp\V20180228\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeAvailableExpertServiceDetail response structure.
 *
 * @method array getExpertService() Obtain Security manager order
 * @method void setExpertService(array $ExpertService) Set Security manager order
 * @method integer getEmergencyResponse() Obtain Number of available emergency responses
 * @method void setEmergencyResponse(integer $EmergencyResponse) Set Number of available emergency responses
 * @method integer getProtectNet() Obtain 
 * @method void setProtectNet(integer $ProtectNet) Set 
 * @method boolean getExpertServiceBuy() Obtain Whether you purchased security manager
 * @method void setExpertServiceBuy(boolean $ExpertServiceBuy) Set Whether you purchased security manager
 * @method boolean getEmergencyResponseBuy() Obtain Whether you purchased emergency response
 * @method void setEmergencyResponseBuy(boolean $EmergencyResponseBuy) Set Whether you purchased emergency response
 * @method boolean getProtectNetBuy() Obtain 
 * @method void setProtectNetBuy(boolean $ProtectNetBuy) Set 
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeAvailableExpertServiceDetailResponse extends AbstractModel
{
    /**
     * @var array Security manager order
     */
    public $ExpertService;

    /**
     * @var integer Number of available emergency responses
     */
    public $EmergencyResponse;

    /**
     * @var integer 
     */
    public $ProtectNet;

    /**
     * @var boolean Whether you purchased security manager
     */
    public $ExpertServiceBuy;

    /**
     * @var boolean Whether you purchased emergency response
     */
    public $EmergencyResponseBuy;

    /**
     * @var boolean 
     */
    public $ProtectNetBuy;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param array $ExpertService Security manager order
     * @param integer $EmergencyResponse Number of available emergency responses
     * @param integer $ProtectNet 
     * @param boolean $ExpertServiceBuy Whether you purchased security manager
     * @param boolean $EmergencyResponseBuy Whether you purchased emergency response
     * @param boolean $ProtectNetBuy 
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("ExpertService",$param) and $param["ExpertService"] !== null) {
            $this->ExpertService = [];
            foreach ($param["ExpertService"] as $key => $value){
                $obj = new ExpertServiceOrderInfo();
                $obj->deserialize($value);
                array_push($this->ExpertService, $obj);
            }
        }

        if (array_key_exists("EmergencyResponse",$param) and $param["EmergencyResponse"] !== null) {
            $this->EmergencyResponse = $param["EmergencyResponse"];
        }

        if (array_key_exists("ProtectNet",$param) and $param["ProtectNet"] !== null) {
            $this->ProtectNet = $param["ProtectNet"];
        }

        if (array_key_exists("ExpertServiceBuy",$param) and $param["ExpertServiceBuy"] !== null) {
            $this->ExpertServiceBuy = $param["ExpertServiceBuy"];
        }

        if (array_key_exists("EmergencyResponseBuy",$param) and $param["EmergencyResponseBuy"] !== null) {
            $this->EmergencyResponseBuy = $param["EmergencyResponseBuy"];
        }

        if (array_key_exists("ProtectNetBuy",$param) and $param["ProtectNetBuy"] !== null) {
            $this->ProtectNetBuy = $param["ProtectNetBuy"];
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
